package com.smalluz.ad.modules.oe.api;

import java.util.Map;

import com.smalluz.ad.modules.common.api.MediaService;
import com.smalluz.ad.modules.common.config.MediaConfigStorage;
import com.smalluz.ad.modules.common.result.BaseResult;
import com.smalluz.ad.modules.oe.result.AccessTokenResult;
import com.smalluz.ad.modules.oe.result.Oauth2AdvertiserResult;

public interface OeService extends MediaService {

    public OeService switchoverTo(String advertiserId);

    /**
     * 
     * @description 获取已经授权的账号信息
     * @return
     */
    Oauth2AdvertiserResult getOauth2Advertiser();
    
    /**
     * @description 获取token授权对象
     * @return
     */
    AccessTokenResult getAccessTokenEntity();

    /**
     * 通过调用接口预判账户是否已经取消授权
     * @param baseResult
     * @return
     */
    Boolean isCancelAuthorization(BaseResult baseResult);
    /**
     * 
     * @description 获取配置信息
     * @return
     */
    MediaConfigStorage getMediaConfigStorage();

    Map<String, MediaConfigStorage> lookMap();

    void setConfigStorage(MediaConfigStorage configProvider);

    void setMultiConfigStorages(Map<String, MediaConfigStorage> configStorages);

    void addConfigStorage(String advertiserId, MediaConfigStorage configStorages);

    void setMultiConfigStorages(Map<String, MediaConfigStorage> configStorages, String defaultMpId);

    /**
     * 
     * @description 获取线索获取相关接口操作类
     * @return
     */
    OeClueService getOeClueService();

    /**
     * 
     * @description 获取账号服务
     * @return
     */
    OeAccountService getOeAccountService();

    /**
     * 获取报表数据服务对象
     * @return
     */
    OeReportService getOeReportService();
}
